perm filename TALK[4,KMC]5 blob sn#139994 filedate 1975-01-15 generic text, type T, neo UTF8
% TO RECONSTRUCT THE TALK CORE IMAGE:

	.R MLISPC					TALK → TALK.LAP
	*(MLISP TALK T)
	*↑C

	.R LISP 16					TALK.LAP → TALK.DMP
	ALLOC? Y
	FULL WDS=2000_					_ MEANS <SPACE>
	BIN.PROG.SP=3200_
	SPEC.PDL=_
	REG. PDL=_
	HASH=_
	*(DSKIN (TALK.LAP) (S,DAV) (MAIL.FNS) SYS: UTILS)
	*(MAIL_INIT)
	*(INITFN (QUOTE RESTART))
	*↑C
	.SAVE TALK00

TO RUN THE PROGRAM, TYPE
	.RUN TALK00[4,KMC]
%


BEGIN  NEW EOF, FILE1, FILE2;   SPECIAL EOF, FILE1, FILE2;


FEXPR OUT (L);						% L = (DESTINATION  FUNCTION  OPEN  CLOSE) %
	IF L[1] EQ 'DOC THEN SEND_MAIL('DOCJOB, L[2])
	ELSE IF L[1] EQ 'OWN THEN EVAL L[2]
	ELSE	BEGIN
		IF LENGTH L ≥ 3 & L[3] THEN EVAL <'OUTPUT, 'DSK:, EVAL L[1]>;
		OUTC(T, NIL);
		EVAL L[2];
		OUTC(NIL, IF LENGTH L = 4 THEN L[4] ELSE NIL);
		END;


FEXPR INP (L);						% L = (SOURCE  FUNCTION) %
	IF L[1] EQ 'DOC THEN SEND_MAIL('DOCJOB, <'SEND_MAIL, '(QUOTE TALK00), L[2]>)
		ALSO WAIT_FOR_MAIL(NIL)
	ELSE EVAL L[2];


EXPR READ_MESSAGE ();
	BEGIN  NEW CH, L;
	PRINTSTR "READY:";
	DO NIL UNTIL (CH ← READCH()) NEQ CR & CH NEQ LF & CH NEQ ALTMODE;
	TERPRI TERPRI DO L ← CH CONS L UNTIL (CH ← READCH()) EQ ALTMODE & (CH ← READCH()) EQ ALTMODE;
	RETURN READLIST('?" CONS REVERSE('?" CONS L));
	END;


EXPR PRINT_MESSAGE (MESSAGE);
	TERPRI TERPRI FOR NEW CH IN MESSAGE DO PRINC CH;


EXPR PRINT_ALL (FILE);					% COPIES FILE "FILE" TO CURRENT OUTPUT FILE %
	BEGIN  NEW CH;
	EVAL <'INC, <'INPUT, FILE, 'DSK:, FILE>, NIL>;
	DO NIL UNTIL TYO(TYI()) EQ OCTAL 45 & (ATOM(CH ← ERRSET(READCH(),T))  |  PRINC(CAR CH) & NIL);
	INC(NIL,T)
	END;


EXPR SLASHIFY (L);
	FOR NEW I IN L COLLECT <'?/, I>;
%##########################################################################################%
%########################          EXECUTION BEGINS HERE          #########################%
%##########################################################################################%


EOF ← PERCENT;						% THE END-OF-FILE CHARACTER %

PRINTSTR TERPRI "WHAT DISK FILE DO YOU WANT THIS INTERVIEW SAVED ON?  (5 LETTERS ONLY)";
FILE1 ← TERPRI READ();
FILE2 ← AT(SUBSTR(FILE1,1,5) CAT "A");			% OUTPUT ALTERNATES BETWEEN THESE TWO %
OUT(FILE1, NIL, T);					% INITIALIZATION %


WHILE T DO
	BEGIN  NEW MESSAGE, VALUES;   SPECIAL MESSAGE, VALUES;
	IF ¬JOB_EXISTS('DOCJOB) THEN
		BEGIN
		PRINTSTR "THE DOCTOR HAS NOT STARTED RUNNING 'DOCJOB' YET.";
		DO SLEEP(30) UNTIL JOB_EXISTS('DOCJOB) | PROG2(PRINTSTR "STILL HASN'T STARTED 'DOCJOB'", NIL);
		TERPRI PRINTSTR "OK, HE JUST STARTED IT.";
		SLEEP(30);				% MAKE SURE HE HAS TIME TO START IT UP %
		END;
	MESSAGE ← INP(DOC, READ_MESSAGE());
	OUT(OWN, TERPRI PRINTSTR MESSAGE);
	OUT(FILE1, TERPRI PRINTSTR TERPRI TERPRI MESSAGE);
	MESSAGE ← INP(OWN, READ_MESSAGE());
        EVAL<'OUT, 'DOC, <'PRINTSTR, <'QUOTE,READLIST SLASHIFY(EXPLODE AT MESSAGE)>>>;
	OUT(FILE1, PRINTSTR MESSAGE);
	OUT(FILE1,  PRINC EOF, NIL, T);
	'(FILE1 FILE2) ←⊗ <FILE2, FILE1>;		% ROTATE THE OUTPUT FILES %
	OUT(FILE1, PRINT_ALL(FILE2), T);
	END;


END.